<template>
  <upload-excel :on-success="handleSuccess" />
</template>

<script>
import { reqImportEmployee } from '@/api/employees'
export default {
  name: 'Import',
  // 不同页面导入的东西不一样，计算属性区别导入什么
  computed: {
    importType() {
      return this.$route.query.type
    }
  },
  methods: {
    // 封装转换excel的日期格式的方法
    formatExcelDate(numb, format) {
      const ONE_DAY_MS = 24 * 60 * 60 * 1000
      const timestamp = (numb - 25569) * ONE_DAY_MS
      const time = new Date(timestamp)
      const year = time.getUTCFullYear()
      const month = time.getUTCMonth() + 1
      let date = time.getUTCDate()
      const isLeapYear = ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0)
      const daysInMonth = [31, isLeapYear ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
      date = Math.min(date, daysInMonth[time.getUTCMonth()])
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    },

    async handleSuccess({ header, results }) {
      // 利用user区分导入的是什么，判断当type为user时，执行里面代码
      if (this.importType === 'user') {
        // results是后端返回的对象数组，键是中文的，需要转成英文

        // header中, results中的数据是中文的, 但是提交给后台的要是英文的
        const userRelations = {
          '入职日期': 'timeOfEntry',
          '手机号': 'mobile',
          '姓名': 'username',
          '转正日期': 'correctionTime',
          '工号': 'workNumber'
        }
        const arr = []
        results.forEach(item => {
          const userInfo = {}
          for (const key in item) {
            // 拿取英文的key
            const EnglishKey = userRelations[key]
            // 判断，如果有需要转换日期的调用转日期方法
            if (['timeOfEntry', 'correctionTime'].includes(EnglishKey)) {
              userInfo[EnglishKey] = this.formatExcelDate(item[key], '-')
            } else {
              userInfo[EnglishKey] = item[key] // 将数组中每一项的值赋值给空对象
            }
          }
          arr.push(userInfo)
        })
        console.log(arr)
        /**
        * 0、在员工页面导入按钮，点击跳转import页面
        * 1、点击上传按钮，将选中excel上传
        * 2、发请求，批量导入
        * 3、回退页面（这里自动刷新数据）
        */
        await reqImportEmployee(arr)
      }
      this.$router.back() // 回退页面
    }
  }
}
</script>

<style>

</style>
